home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / telecomm / sticpsrc.lzh / SOURCE.ARC / LAPB.H < prev    next >
C/C++ Source or Header  |  1990-08-10  |  4KB  |  118 lines

  1. /* Upper sub-layer (LAPB) definitions */
  2.  
  3. /* Control field templates */
  4. #define I    0x00    /* Information frames */
  5. #define S    0x01    /* Supervisory frames */
  6. #define RR    0x01    /* Receiver ready */
  7. #define RNR    0x05    /* Receiver not ready */
  8. #define REJ    0x09    /* Reject */
  9. #define SREJ    0x0d    /* Selective Reject */
  10. #define U    0x03    /* Unnumbered frames */
  11. #define UI    0x03    /* Unnumbered information */
  12. #define SIM    0x07    /* Set Initialization Mode (req) */
  13. #define RIM    0x07    /* Request Initialization Mode (rsp) */
  14. #define DM    0x0f    /* Disconnected mode (rsp) */
  15. #define SARM    0x0f    /* Set Asynchronous Response Mode (req) */
  16. #define UP    0x23    /* Unnumbered Poll */
  17. #define SABM    0x2f    /* Set Asynchronous Balanced Mode */
  18. #define DISC    0x43    /* Disconnect (req) */
  19. #define RD    0x43    /* Request Disconnect (rsp) */
  20. #define SARME    0x4f    /* Set Normal Response Mode Extended */
  21. #define UA    0x63    /* Unnumbered acknowledge */
  22. #define SABME    0x6f    /* Set Asynchronous Balanced Mode Extended */
  23. #define SNRM    0x83    /* Set Normal Response Mode */
  24. #define XID    0xaf    /* eXchange ID */
  25. #define FRMR    0x87    /* Frame reject */
  26. #define RSET    0x8f    /* Reset */
  27. #define SNRME    0xcf    /* Set Normal Response Mode Extended */
  28. #define TEST    0xe3    /* Test */
  29. #define PF    0x10    /* Poll/final bit */
  30.  
  31. #define MMASK    7    /* Mask for modulo-8 sequence numbers */
  32.  
  33. /* FRMR reason bits */
  34. #define W    1    /* Invalid control field */
  35. #define X    2    /* Unallowed I-field */
  36. #define Y    4    /* Too-long I-field */
  37. #define Z    8    /* Invalid sequence number */
  38.  
  39. /* Per-connection link control block
  40.  * These are created and destroyed dynamically,
  41.  * and are indexed through a hash table.
  42.  * One exists for each logical AX.25 Level 2 connection
  43.  */
  44. struct ax25_cb {
  45.     struct ax25_cb *next;        /* Doubly linked list pointers */
  46.     struct ax25_cb *prev;
  47.  
  48.     struct mbuf *txq;        /* Transmit queue */
  49.     struct mbuf *rxasm;        /* Receive reassembly buffer */
  50.     struct mbuf *rxq;        /* Receive queue */
  51.     struct mbuf *sammlq[8];        /* "Frame Sammler" */
  52.     char sammlchk[8];        /* checksums for "Frame Sammler" */
  53.  
  54.     struct ax25 addr;        /* Address header */
  55.  
  56.     struct interface *interface;    /* Associated interface */
  57.  
  58.     char rejsent;            /* REJ frame has been sent */
  59.     char remotebusy;        /* Remote sent RNR */
  60.     char waitack;            /* Wait for F-bit Ack */
  61.     char response;            /* Response owed to other end */
  62.     char fin;            /* Disc after ACK of all frames */
  63.  
  64.     char vs;            /* Our send state variable */
  65.     char vr;            /* Our receive state variable */
  66.     char sent;            /* Number of frames sent (unacked) */
  67.     char unack;            /* Number of unacked frames */
  68.     int maxframe;            /* Transmit flow control level */
  69.     int maxsamml;            /* Maximum lookahead by sammler */
  70.     int16 paclen;            /* Maximum outbound packet size */
  71.     int16 window;            /* Local flow control limit */
  72.     char proto;            /* Protocol version */
  73. #define V1    1            /* AX.25 Version 1 */
  74. #define V2    2            /* AX.25 Version 2 */
  75.     int16    pthresh;        /* Poll threshold */
  76.     unsigned retries;        /* Retry counter */
  77.     unsigned n2;            /* Retry limit */
  78.     int state;            /* Link state */
  79. #define DISCONNECTED    0
  80. #define SETUP        1
  81. #define DISCPENDING    2
  82. #define CONNECTED    3
  83. #define FRAMEREJECT    4
  84.     char control;            /* Control field of last rcvd frame */
  85.     char frmrinfo[3];        /* I-field for FRMR message */
  86.     struct timer t1;        /* Retry timer */
  87.     struct timer t2;        /* Acknowledgement delay timer */
  88.     struct timer t3;        /* Keep-alive poll timer */
  89.     struct timer t4;        /* Link-idle disconnect timer */
  90.  
  91.     void (*r_upcall)();        /* Receiver upcall */
  92.     void (*t_upcall)();        /* Transmit upcall */
  93.     void (*s_upcall)();        /* State change upcall */
  94.     char *user;            /* User pointer */
  95. };
  96. #define NULLAX25    ((struct ax25_cb *)0)
  97. extern struct ax25_cb ax25default;
  98. extern struct ax25_cb *ax25_cb[];
  99. #define NHASH    17
  100.  
  101. #if (defined(ATARI_ST) && defined(__TURBOC__))
  102. extern log_ax(struct ax25_cb *,char *,...);
  103. #endif
  104.  
  105. /* State change messages sent to client */
  106. #define LAPBNOMS    0        /* no message */
  107. #define LAPBCONN    1        /* CONNECTED to */
  108. #define LAPBDISC    2        /* DISCONNECTED from */
  109. #define LAPBBUSY    3        /* BUSY from */
  110. #define LAPBFAIL    4        /* LINK FAILURE with */
  111. #define LAPBRESF    5        /* LINK RESET from */
  112. #define LAPBREST    6        /* LINK RESET to */
  113. #define LAPBFRMF    7        /* FRAME REJECT from */
  114. #define LAPBFRMT    8        /* FRAME REJECT to */
  115.  
  116. #define YES    1
  117. #define NO    0
  118.